﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace Processes.Evaluacion
{
    public class GestorEvaluacion
    {
        public static Model.Evaluacion CrearEvaluacion(long codigoPrograma, string nroParticipantes,string resultados,string recomendaciones,string logros,string acciones)
        {
            Model.Evaluacion nuevaEvaluacion = new Model.Evaluacion();
            try
            {
                string pattern = @"^[a-zA-Z0-9 ]*$";
                string formato = @"^[1-9]";
                nuevaEvaluacion.CodigoPrograma = codigoPrograma;

                if (!String.IsNullOrEmpty(nroParticipantes) && !String.IsNullOrEmpty(resultados) && !String.IsNullOrEmpty(recomendaciones) && !String.IsNullOrEmpty(logros) && !String.IsNullOrEmpty(acciones))
                {
                    if (!Regex.IsMatch(nroParticipantes, formato))
                    {
                        throw new Exception("Formato incorrecto en el Nro de Participantes. Ingrese solo numeros o  ingrese mayor a 0.");
                    }
                    nuevaEvaluacion.NroParticipantes = Int32.Parse(nroParticipantes);
                    if (!Regex.IsMatch(resultados, pattern))
                    {
                        throw new Exception("Formato incorrecto en los resultados");
                    }
                    nuevaEvaluacion.Resultados = resultados;
                    if (!Regex.IsMatch(recomendaciones, pattern))
                    {
                        throw new Exception("Formato incorrecto recomendaciones");
                    }
                    nuevaEvaluacion.Recomendaciones = recomendaciones;
                    if (!Regex.IsMatch(logros, pattern))
                    {
                        throw new Exception("Formato incorrecto en logros alcanzados");
                    }
                    nuevaEvaluacion.LogrosAlcanzados = logros;
                    if (!Regex.IsMatch(acciones, pattern))
                    {
                        throw new Exception("Formato incorrecto acciones tomadas");
                    }

                    nuevaEvaluacion.AccionesTomadas = acciones;
                    nuevaEvaluacion = DataBase.Evaluacion.BDEvaluacion.CrearEvaluacion(nuevaEvaluacion);
                }
                else
                    throw new Exception("Todos los campos son obligatorios");
            }
            catch (Exception)
            {
                throw;
            }
            return nuevaEvaluacion;
        }
        public static Model.Evaluacion ModificarEvaluacion(long codigoPrograma, string nroParticipantes, string resultados, string recomendaciones, string logros, string acciones)
        {
            Model.Evaluacion nuevaEvaluacion = new Model.Evaluacion();
            try
            {
                string pattern = @"^[a-zA-Z0-9 ]*$";
                string formato = @"^[1-9]";
                nuevaEvaluacion.CodigoPrograma = codigoPrograma;

                if (!String.IsNullOrEmpty(nroParticipantes) && !String.IsNullOrEmpty(resultados) && !String.IsNullOrEmpty(recomendaciones) && !String.IsNullOrEmpty(logros) && !String.IsNullOrEmpty(acciones))
                {
                    if (!Regex.IsMatch(nroParticipantes, formato))
                    {
                        throw new Exception("Formato incorrecto en el Nro de Participantes. Ingrese solo numeros o  ingrese mayor a 0.");
                    }
                    nuevaEvaluacion.NroParticipantes = Int32.Parse(nroParticipantes);
                    if (!Regex.IsMatch(resultados, pattern))
                    {
                        throw new Exception("Formato incorrecto en los resultados");
                    }
                    nuevaEvaluacion.Resultados = resultados;
                    if (!Regex.IsMatch(recomendaciones, pattern))
                    {
                        throw new Exception("Formato incorrecto recomendaciones");
                    }
                    nuevaEvaluacion.Recomendaciones = recomendaciones;
                    if (!Regex.IsMatch(logros, pattern))
                    {
                        throw new Exception("Formato incorrecto en logros alcanzados");
                    }
                    nuevaEvaluacion.LogrosAlcanzados = logros;
                    if (!Regex.IsMatch(acciones, pattern))
                    {
                        throw new Exception("Formato incorrecto acciones tomadas");
                    }

                    nuevaEvaluacion.AccionesTomadas = acciones;
                    nuevaEvaluacion = DataBase.Evaluacion.BDEvaluacion.ModificarEvaluacion(nuevaEvaluacion);
                }
                else
                    throw new Exception("Todos los campos son obligatorios");
            }
            catch (Exception)
            {
                throw;
            }
            return nuevaEvaluacion;
        }
    }
}
